package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import util.Conexion;
import bean.Medida;

public class MedidaDAO {
	
	public List<Medida> listar() throws SQLException{
		List<Medida> listado = new ArrayList<Medida>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,Medida,tbiden,estandar,orden,situacion " +
				"FROM tbl_Medida");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			Medida medida = new Medida();
			medida.setId(rs.getInt("id"));
			medida.setMedida(rs.getString("medida"));
			medida.setTbiden(rs.getString("tbiden"));
			medida.setEstandar(rs.getString("estandar"));
			medida.setSituacion(rs.getString("situacion"));
			medida.setOrden(rs.getInt("orden"));
			listado.add(medida);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<Medida> buscarPorMedida(String filtro,String tipo,String situacion) throws SQLException{
		List<Medida> listado = new ArrayList<Medida>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,Medida,tbiden,estandar,orden,situacion " +
				"FROM tbl_Medida WHERE situacion in ("+situacion+")  and tbiden=? and medida like ?");
		pstm.setString(1, tipo);
		pstm.setString(2, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			Medida medida = new Medida();
			medida.setId(rs.getInt("id"));
			medida.setMedida(rs.getString("medida"));
			medida.setTbiden(rs.getString("tbiden"));
			medida.setEstandar(rs.getString("estandar"));
			medida.setSituacion(rs.getString("situacion"));
			medida.setOrden(rs.getInt("orden"));
			listado.add(medida);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<Medida> buscarPorMedida(String filtro,String tipo) throws SQLException{
		List<Medida> listado = new ArrayList<Medida>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,Medida,tbiden,estandar,orden,situacion " +
						"FROM tbl_Medida WHERE tbiden=? and medida = ?");
		pstm.setString(1,tipo);	
		pstm.setString(2,filtro);	
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			Medida medida = new Medida();
			medida.setId(rs.getInt("id"));
			medida.setMedida(rs.getString("medida"));
			medida.setTbiden(rs.getString("tbiden"));
			medida.setEstandar(rs.getString("estandar"));
			medida.setSituacion(rs.getString("situacion"));
			medida.setOrden(rs.getInt("orden"));
			listado.add(medida);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<Medida> buscarPorEstandar(String filtro,String tipo,String situacion) throws SQLException{
		List<Medida> listado = new ArrayList<Medida>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,Medida,tbiden,estandar,orden,situacion " +
				"FROM tbl_Medida WHERE situacion in ("+situacion+")  and tbiden=? and estandar like ?");
		pstm.setString(1, tipo);
		pstm.setString(2, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			Medida medida = new Medida();
			medida.setId(rs.getInt("id"));
			medida.setMedida(rs.getString("medida"));
			medida.setTbiden(rs.getString("tbiden"));
			medida.setEstandar(rs.getString("estandar"));
			medida.setSituacion(rs.getString("situacion"));
			medida.setOrden(rs.getInt("orden"));
			listado.add(medida);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<Medida> buscarPorOrden(int filtro,String tipo,String situacion) throws SQLException{
		List<Medida> listado = new ArrayList<Medida>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,Medida,tbiden,estandar,orden,situacion " +
				"FROM tbl_Medida WHERE situacion in ("+situacion+")  and tbiden=? and orden = ?");
		pstm.setString(1, tipo);
		pstm.setInt(2, filtro);
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			Medida medida = new Medida();
			medida.setId(rs.getInt("id"));
			medida.setMedida(rs.getString("medida"));
			medida.setTbiden(rs.getString("tbiden"));
			medida.setEstandar(rs.getString("estandar"));
			medida.setSituacion(rs.getString("situacion"));
			medida.setOrden(rs.getInt("orden"));
			listado.add(medida);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public int insertar(Medida medida) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
		"insert into tbl_medida (Medida,situacion,orden,usuario_creacion,fecha_creacion,estandar,tbiden) values (?,?,?,?,?,?,?)");
		pstm.setString(1, medida.getMedida());
		pstm.setString(2, medida.getSituacion());
		pstm.setInt(3, medida.getOrden());
		pstm.setString(4, medida.getUsuario_creacion());
		pstm.setInt(5, medida.getFecha_creacion());
		pstm.setString(6, medida.getEstandar());
		pstm.setString(7, medida.getTbiden());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}
	
	public int actualizar(Medida medida) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
		"update tbl_medida set Medida=?,orden=?,situacion = ?,usuario_modificacion=?,fecha_modificacion=?,estandar=?,tbiden=? where id=?");
		pstm.setString(1, medida.getMedida());
		pstm.setInt(2, medida.getOrden());
		pstm.setString(3, medida.getSituacion());
		pstm.setString(4, medida.getUsuario_modificacion());
		pstm.setInt(5, medida.getFecha_modificacion());
		pstm.setString(6, medida.getEstandar());
		pstm.setString(7, medida.getTbiden());
		pstm.setInt(8, medida.getId());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}
}
